import 'package:permission_handler/permission_handler.dart';

class DeviceAuth {
  static final DeviceAuth _instance = DeviceAuth._internal();

  factory DeviceAuth() {
    return _instance;
  }

  DeviceAuth._internal() {
    // 私有构造函数，用于实现单例模式
  }
  var camera = 'camera';
  var storage = 'storage';

  // 处理权限请求的通用方法（可以根据具体需求进行调整）
  Future<bool> get(String authName) async {
    PermissionStatus status;
    switch (authName) {
      case 'camera':
        status = await Permission.camera.request();
        break;
      default:
        status = await Permission.storage.request();
    }
    if (status.isGranted) {
      // 权限被授予
      // 执行需要该权限的操作
      return true;
    } else if (status.isPermanentlyDenied) {
      // 权限被永久拒绝
      // 可以在这里打开应用的设置页面，引导用户手动开启权限
      openSetting();
      return false;
    } else {
      // 权限请求被拒绝，但用户可以再次请求
      // 可以选择显示一个对话框或snackbar通知用户
      return false;
    }
  }

  // 打开应用的设置页面（iOS和Android）
  void openSetting() {
    openAppSettings();
  }
}
